from rest_framework import serializers
from users.models import User
import re


# class UserSerializer(serializers.Serializer):
class UserSerializer(serializers.ModelSerializer):
    """
    用户序列化器
    """

    class Meta:
        model = User
        fields = ('id', 'username', 'mobile', 'email', 'password')

        extra_kwargs = {
            'password': {
                'write_only': True,
                'max_length': 20,
                'min_length': 6,
            }
        }

    def validate_mobile(self, value):  # 验证某字段的 方法名 格式固定
        if not re.match(r'1[3-9]\d{9}', value):
            raise serializers.ValidationError('手机号格式不正确')
        return value

    def create(self, validated_data):
        # 方法一：
        # user = super().create(validated_data)  # 先通过父类提供的方法，把对象保存起来，再对密码进行加密
        #
        # # 密码加密
        # user.set_password(validated_data['password'])  # set_password是User模型类提供的方法
        # user.save()

        # 方法二
        user = User.objects.create_user(**validated_data)  # 已经包含了密码加密

        return user

